﻿using System;
using System.Collections.Generic;

namespace WUDI.ECharts.Series.Gauge
{
	public class Gauge
	{

		public String type { get; set; } = "gauge";

		/// <summary>
		/// string
		/// 组件 ID。默认不指定。指定则可用于在 option 或者 API 中引用组件。
		/// </summary>
		public String id { get; set; }

		/// <summary>
		/// string
		/// 系列名称，用于tooltip的显示，legend 的图例筛选，在 setOption 更新数据和配置项时用于指定对应的系列。
		/// </summary>
		public String name { get; set; }

		/// <summary>
		/// number,string
		/// 仪表盘半径，可以是相对于容器高宽中较小的一项的一半的百分比，也可以是绝对的数值。
		/// {{ use partial-legend-hover-link }}
		/// </summary>
		public dynamic radius { get; set; } = "75%";

		/// <summary>
		/// number
		/// 仪表盘起始角度。圆心 正右手侧为0度，正上方为90度，正左手侧为180度。
		/// </summary>
		public int startAngle { get; set; } = 225;

		/// <summary>
		/// number
		/// 仪表盘结束角度。
		/// </summary>
		public int endAngle { get; set; } = -45;

		/// <summary>
		/// boolean
		/// 仪表盘刻度是否是顺时针增长。
		/// </summary>
		public Boolean clockwise { get; set; } = true;

		/// <summary>
		/// Array
		/// 系列中的数据内容数组。数组项可以为单个数值，如：
		/// [12, 34, 56, 10, 23]
		/// 如果需要在数据中加入其它维度给 visualMap 组件用来映射到颜色等其它图形属性。每个数据项也可以是数组，如：
		/// [[12, 14], [34, 50], [56, 30], [10, 15], [23, 10]]
		/// 这时候可以将每项数组中的第二个值指定给 visualMap 组件。
		/// 更多时候我们需要指定每个数据项的名称，这时候需要每个项为一个对象：
		/// [{
		///     // 数据项的名称
		///     name: '数据1',
		///     // 数据项值8
		///     value: 10
		/// }, {
		///     name: '数据2',
		///     value: 20
		/// }]
		/// 需要对个别内容指定进行个性化定义时：
		/// [{
		///     name: '数据1',
		///     value: 10
		/// }, {
		///     // 数据项名称
		///     name: '数据2',
		///     value : 56,
		///     //自定义特殊 tooltip，仅对该数据项有效
		///     tooltip:{},
		///     //自定义特殊itemStyle，仅对该item有效
		///     itemStyle:{}
		/// }]
		/// </summary>
		public List<object> data { get; set; }

		/// <summary>
		/// number
		/// 最小的数据值，映射到 minAngle。
		/// </summary>
		public int min { get; set; } = 0;

		/// <summary>
		/// number
		/// 最大的数据值，映射到 maxAngle。
		/// </summary>
		public int max { get; set; } = 100;

		/// <summary>
		/// number
		/// 仪表盘刻度的分割段数。
		/// </summary>
		public int splitNumber { get; set; } = 10;

		/// <summary>
		/// Object
		/// 仪表盘轴线相关配置。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.AxisLine.AxisLine axisLine { get; set; }

		/// <summary>
		/// Object
		/// 分隔线样式。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.SplitLine.SplitLine splitLine { get; set; }

		/// <summary>
		/// Object
		/// 刻度样式。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.AxisTick.AxisTick axisTick { get; set; }

		/// <summary>
		/// Object
		/// 刻度标签。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.AxisLabel.AxisLabel axisLabel { get; set; }

		/// <summary>
		/// Object
		/// 仪表盘指针。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.Pointer.Pointer pointer { get; set; }

		/// <summary>
		/// Object
		/// 仪表盘指针样式。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.ItemStyle.ItemStyle itemStyle { get; set; }

		/// <summary>
		/// Object
		/// 高亮的仪表盘指针样式
		/// </summary>
		public WUDI.ECharts.Series.Gauge.Emphasis.Emphasis emphasis { get; set; }

		/// <summary>
		/// Object
		/// 仪表盘标题。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.Title.Title title { get; set; }

		/// <summary>
		/// Object
		/// 仪表盘详情，用于显示数据。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.Detail.Detail detail { get; set; }

		/// <summary>
		/// Object
		/// 图表标注。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.MarkPoint.MarkPoint markPoint { get; set; }

		/// <summary>
		/// *
		/// 图表标线。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.MarkLine.MarkLine markLine { get; set; }

		/// <summary>
		/// Object
		/// 图表标域，常用于标记图表中某个范围的数据，例如标出某段时间投放了广告。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.MarkArea.MarkArea markArea { get; set; }

		/// <summary>
		/// boolean
		/// 图形是否不响应和触发鼠标事件，默认为 false，即响应和触发鼠标事件。
		/// </summary>
		public Boolean silent { get; set; } = false;

		/// <summary>
		/// boolean
		/// 是否开启动画。
		/// </summary>
		public Boolean animation { get; set; } = true;

		/// <summary>
		/// number
		/// 是否开启动画的阈值，当单个系列显示的图形数量大于这个阈值时会关闭动画。
		/// </summary>
		public int animationThreshold { get; set; } = 2000;

		/// <summary>
		/// number
		/// 初始动画的时长，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果：
		/// animationDuration: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// </summary>
		public int animationDuration { get; set; } = 1000;

		/// <summary>
		/// string
		/// 初始动画的缓动效果。不同的缓动效果可以参考 缓动示例。
		/// </summary>
		public String animationEasing { get; set; } = "cubicOut";

		/// <summary>
		/// number,Function
		/// 初始动画的延迟，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果。
		/// 如下示例：
		/// animationDelay: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// 也可以看该示例
		/// </summary>
		public dynamic animationDelay { get; set; } = 0;

		/// <summary>
		/// number,Function
		/// 数据更新动画的时长。
		/// 支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果：
		/// animationDurationUpdate: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// </summary>
		public dynamic animationDurationUpdate { get; set; } = 300;

		/// <summary>
		/// string
		/// 数据更新动画的缓动效果。
		/// </summary>
		public String animationEasingUpdate { get; set; } = "cubicOut";

		/// <summary>
		/// number,Function
		/// 数据更新动画的延迟，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果。
		/// 如下示例：
		/// animationDelayUpdate: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// 也可以看该示例
		/// </summary>
		public dynamic animationDelayUpdate { get; set; } = 0;

		/// <summary>
		/// *
		/// 本系列特定的 tooltip 设定。
		/// </summary>
		public WUDI.ECharts.Series.Gauge.Tooltip.Tooltip tooltip { get; set; }

	}
}
